“Particle system” refers to a computer graphics technique to simulate certain fuzzy phenomena, which are difficult to reproduce with conventional rendering techniques. Examples of phenomena commonly simulated with particle systems include fire, explosions, smoke, flowing water, sparks, falling leaves, clouds, fog, snow, dust, meteor tails, or abstract visual effects like glowing trails, magic spells, etc.
Smoothed Particle Hydrodynamics (SPH) is a computational method used for simulating fluid flows. The SPH method works by dividing the fluid into a set of discrete “fluid elements” or particles. These particles have a spatial distance (known as the “smoothing length”, typically represented in equations by h), over which their properties are “smoothed” by a kernel function. This means that any physical quantity of any particle can be obtained by summing the relevant properties of all the particles which lie within two smoothing lengths.
By assigning each particle its own smoothing length and allowing the smoothing length to vary with time, the resolution of a simulation can be made to adapt itself depending on local conditions. For example, in a very dense region where many particles are close together the smoothing length can be made relatively short, yielding high spatial resolution. Conversely, in low-density regions individual particles are far apart and the resolution is low, optimizing the computation for the regions of interest. Previous approaches used static footprints for particles, such as spheres.
SPH is a popular technique in production environments because it allows fast simulations of fluid effects like splashes, filaments, and thin-sheets. These elements are computationally intensive to produce with grid based fluid solvers.
The traditional approach to surfacing particle systems uses Constructive Solid Geometry (CSG). CSG is a technique used in solid modeling that allows a modeler to create a complex surface or object by using Boolean operators to combine objects. Prior systems for surfacing particle systems use CSG blending of metaballs or spheres as particle footprints sampled on a dense, regular 3D grid. The metaballs or spheres would have fixed characteristics during the simulation. This severely limits the quality of the resulting surfaces due to resolution and computational overheads in both time and memory.
Consequently, SPH surfaces often have a characteristic “blobby” look that clearly reveals the underlying particles. The lack of a coherent “surface” is a disadvantage when simulating fluids such as water. Furthermore, particle systems are typically sparse and occupy large (empty) spaces, making them very inefficient to sample on dense, regular 3D grids.
To improve results, the number of particles in the particle system can be increased at the cost of additional computation resources. Alternatively, the size of each particle footprint can be increased at the cost of losing surface details, for example, by increasing the radius of each metaball.
Temporal aliasing occurs when temporal signals are discretely sampled over time, for example, a playback of images in an animation sequence. This results in flickering, incoherent popping of surfaces, or other artifacts. The artifacts increase with faster motion (i.e. high frequency) or low sampling-rates (i.e. frame-rates). A previous approach is to motion-blur (i.e. band-limit) the signal which typically amounts to blending of discrete samples (e.g. frames) acquired at different time.
The level set method is a numerical technique for tracking interfaces and shapes. The level set method allows numerical computations involving curves and surfaces on a fixed Cartesian grid without having to parameterize these objects. This also makes it easy to follow shapes that change topology, such as when a shape splits in two, develops holes, etc. These benefits make the level set method great for modeling time-varying objects, like inflation of an airbag, or a drop of oil floating in water.
A level set function takes positive values inside the region defined by a shape to be modeled and negative values outside. A level set data structure is designed to represent such level set functions efficiently.